'''
1. 什么是包
    包就是一个包含有__init__.py文件的文件夹
    包本质就是一种模块,即包是用包导入使用的,包内部包含的文件也都是用来被导入使用
2 为何要用包
    那文件夹就是用来组织文件的，包就是组织模块的
'''
 # 首次导入包,发生三件事,
# 1. 以包下的__init_.py文件为基准来产生一个名称空间
# 2. 执行包下的__init_.py文件的代码,将执行过程中产生的名字都丢到名称空间中
# 3. 在当前执行文件中拿到一个名字p1,该p1就是指向__init__.py名称空间的
# 总结包的使用无非注意三点:
# 1. 导入包就是在导包下的__init__.py文件
# 2. 使用绝对导入,绝对导入的起始位置都是以包的目录为起始点
# 3. 但是包内部模块的导入通常应该使用相对导入,用.代表当前所在的文件(而非执行文件),..代表上一级
# 让用户感觉这就是一个模块
# 包可以更新模块，多个模块不会乱
import p1
p1.f1()
p1.f2()
